package com.csi.bumblebee.service.impl;

import com.csi.bumblebee.domain.user.Resume;
import com.csi.bumblebee.domain.user.Student;
import com.csi.bumblebee.mapper.ResumeMapper;
import com.csi.bumblebee.service.ResumeService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;


import java.io.Serializable;
import java.util.List;

import com.csi.bumblebee.util.IdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author 尹炳顺 韦典良
 * @author HUOJT
 */
@Transactional(rollbackFor = Exception.class)
@Service
public class ResumeServiceImpl implements ResumeService {

    @Autowired
    private RedisTemplate<String, Serializable> redisTemplate;

    @Autowired
    private ResumeMapper resumeMapper;

    /**
     * 按条件查询
     *
     * @param majorId 专业名
     * @param educationBackgroundId   学历
     * @param examResultId   考试等级
     * @return List对象
     */
    // todo: 霍江涛修改！！！！！！！！！！！！！！！！！！！！！！！
    // todo: 霍江涛修改！！！！！！！！！！！！！！！！！！！！！！！
    // todo: 霍江涛修改！！！！！！！！！！！！！！！！！！！！！！！
    // todo: 霍江涛修改！！！！！！！！！！！！！！！！！！！！！！！
    // todo: 霍江涛修改！！！！！！！！！！！！！！！！！！！！！！！
    @Override
    public List<Resume> findByCondition(String majorId, String educationBackgroundId, String examResultId) {
        return resumeMapper.findByCondition(majorId, educationBackgroundId, examResultId,null,null);
    }

    /**
     * 查询所有简历
     * @param currentPage 当前页
     * @param perPageSize 每页数据
     * @return PageInfo对象
     */
    @Override
    public PageInfo<Resume> listResume(Integer currentPage, Integer perPageSize) {
        System.out.println(currentPage);
        System.out.println(perPageSize);
        if(currentPage !=null && perPageSize !=null){
            PageHelper.startPage(currentPage,perPageSize);
        }
        return new PageInfo<>(resumeMapper.listResume());
    }

    @Override
    public int banResume(String id) {
        return resumeMapper.banResume(id);
    }

    @Override
    public int delete(String id) {
        return resumeMapper.delete(id);
    }

    /** 简历信息修改
     * @param resume 简历对象
     * @return 影响行数
     */
    @Override
    public int updateResume(Resume resume) {

        if (resume != null) {
            return this.resumeMapper.updateResume(resume);
        }

        return 0;
    }

    /**
     * 增加简历信息
     *
     * @param resume 简历信息对象
     * @return 影响行数
     */
    @Override
    public int addResume(Resume resume) {

        if (resume != null) {
            resume.setId(IdUtil.getString("US"));
            return this.resumeMapper.addResume(resume);
        }

        return 0;
    }

    /**
     * 查询简历信息
     *
     * @param id 学生id
     * @return 简历对象
     */
    @Override
    @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
    public Resume findResume(String id) {

        if (id != null) {
            return this.resumeMapper.findResume(id);
        }

        return null;
    }

    /**
     * 变更简历启用状态
     *
     * @param resume 简历对象
     * @return 影响行数
     */
    @Override
    public int updateResumeStatus(Resume resume) {

        if (resume.getStudentId() != null && resume.getStatus() > 0 && resume.getStatus() < 3) {
            return this.resumeMapper.updateResumeStatus(resume);
        }

        return 0;
    }


}
